package com.thz.common.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 统一的转换记录实体类
 * 用于记录所有类型的转换操作
 * 
 * @author THZ
 * @date 2025
 */
@Data
@TableName("conversion_record")
public class ConversionRecord {
    
    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;
    
    /**
     * 用户ID
     */
    @TableField("user_id")
    private Long userId;
    
    /**
     * IP地址
     */
    @TableField("ip_address")
    private String ipAddress;
    
    /**
     * 转换类型（VIDEO_TO_GIF, FILE_TO_SVG等）
     */
    @TableField("conversion_type")
    private String conversionType;
    
    /**
     * 关联的具体转换记录ID（对应video_to_gif或file_to_svg表的ID）
     */
    @TableField("reference_id")
    private Long referenceId;
    
    /**
     * 原始文件名
     */
    @TableField("original_filename")
    private String originalFilename;
    
    /**
     * 输出文件名
     */
    @TableField("output_filename")
    private String outputFilename;
    
    /**
     * 缩略图文件名
     */
    @TableField("thumbnail_filename")
    private String thumbnailFilename;
    
    /**
     * 原始文件大小（字节）
     */
    @TableField("original_file_size")
    private Long originalFileSize;
    
    /**
     * 输出文件大小（字节）
     */
    @TableField("output_file_size")
    private Long outputFileSize;
    
    /**
     * 输出文件宽度
     */
    @TableField("output_width")
    private Integer outputWidth;
    
    /**
     * 输出文件高度
     */
    @TableField("output_height")
    private Integer outputHeight;
    
    /**
     * 转换状态（0-待转换，1-转换中，2-转换成功，3-转换失败）
     */
    @TableField("conversion_status")
    private Integer conversionStatus;
    
    /**
     * 错误信息
     */
    @TableField("error_message")
    private String errorMessage;
    
    /**
     * 创建时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;
    
    /**
     * 更新时间
     */
    @TableField("update_time")
    private LocalDateTime updateTime;
}

